// 这里的vm，就是我们在vue文件里面的this，所以我们能在这里获取vuex的变量，比如存放在里面的token变量
import md5Libs from "uview-ui/libs/function/md5";
const install = (Vue, vm) => {
  // 此为自定义配置参数，具体参数见上方说明
  Vue.prototype.$u.http.setConfig({
    baseUrl: 'https://m.asy315.vip',//生产环境
    // baseUrl: 'https://t.asy315.vip', //测试环境
    // baseUrl: 'http://192.168.10.168:80', //开发环境
    // baseUrl: 'http://asy.nat300.top', //内网通道
    // baseUrl: "https://q71107k696.imdo.co", //内网通道
    // baseUrl: 'https://q71107k696.imdo.co',
    // baseUrl: 'https://hxy.asy315.vip/one/v1', //hxy生产环境开放接口测试地址
    // baseUrl: 'http://192.168.10.168:58000/one/v1', //本地环境开放接口测试地址
    showLoading: false,
    loadingText: "",
    loadingTime: 800,
    originalData: false, // 是否在拦截器中返回服务端的原始数据
    loadingMask: true, // 展示loading的时候，是否给一个透明的蒙层，防止触摸穿透
    header: {
      "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
    },
  });

  // 请求拦截，配置Token等参数
  Vue.prototype.$u.http.interceptor.request = (config) => {
    if (
      config.url == "/wx/scan/signature" ||
      config.url == "/wx/auth/signature"
    ) {
      config.header["Content-Type"] = "application/json;charset=UTF-8";
    }
    if (uni.getStorageSync("lifeData").vuex_token) {
      config.header["login-token"] = uni.getStorageSync("lifeData").vuex_token;
    } else {
      config.header["login-token"] = "";
    }
    // 可以对某个url进行特别处理，此url参数为this.$u.get(url)中的url值
    // if(config.url == '/user/login') config.header.noToken = true;
    // 最后需要将config进行return
    return config;
    // 如果return一个false值，则会取消本次请求
    // if(config.url == '/user/rest') return false; // 取消某次请求
  };

  // 响应拦截，判断状态码是否通过
  Vue.prototype.$u.http.interceptor.response = (res) => {
    // console.log(res)
    return res;
    // if(res.code == 200) {
    // 	// res为服务端返回值，可能有code，result等字段
    // 	// 这里对res.result进行返回，将会在this.$u.post(url).then(res => {})的then回调中的res的到
    // 	// 如果配置了originalData为true，请留意这里的返回值
    // 	return res.result;
    // } else if(res.code == 201) {
    // 	// 假设201为token失效，这里跳转登录
    // 	vm.$u.toast('验证失败，请重新登录');
    // 	setTimeout(() => {
    // 		// 此为uView的方法，详见路由相关文档
    // 		vm.$u.route('/pages/user/login')
    // 	}, 1500)
    // 	return false;
    // } else {
    // 	// 如果返回false，则会调用Promise的reject回调，
    // 	// 并将进入this.$u.post(url).then().catch(res=>{})的catch回调中，res为服务端的返回值
    // 	return false;
    // }
  };
};

export default {
  install,
};
